/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package vue;

import controlleur.ControleurDeJeu;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.io.IOException;

/**
 *
 * Classe qui organise la fenetre de jeu c'est elle qui place le panel de la
 * main, le panel de la séléction et le panel du terrain
 *
 * @author Antoine Thorr, Joana Santos, Samy Rida, Vicky Ngo Pagbe
 */
public class Board extends JPanel implements ActionListener {
//Attributs : cjeu est un ControleurDeJeu qui est pris en paramètre, terrain, main, selection sont des instanciation des vues et partiegauche est un panel 
//avec main et sa séléction

    private ControleurDeJeu cjeu;
    private Terrain_vue terrain;
    private Main_vue main;
    private Selection_vue selection;
    private JPanel partiegauche;

    /**
     *
     * @param cjeu
     * @throws IOException
     */
    public Board(ControleurDeJeu cjeu) throws IOException {

        this.cjeu = cjeu;

        //Création de mes 2 panel pricipaux a gauche la main et la séléction, à droite le terrain
        this.partiegauche = new JPanel(new GridLayout(2, 1, 0, 5));
        this.terrain = new Terrain_vue(cjeu);

        //Configuration des tailles et des positionnement directe de la main, de la séléction et du terrain 
        this.main = new Main_vue(cjeu);
        this.selection = new Selection_vue(cjeu);
        this.cjeu.addObs(main);
        this.cjeu.addObs(selection);
        this.cjeu.addObs(terrain);

        addMouseMotionListener(new Board.SourisMouse());
        addMouseListener(new Board.ClicSouris());

        this.terrain.setBackground(Color.white);
        this.main.setBackground(new Color(218, 218, 218));
        this.selection.setBackground(new Color(125, 167, 217));

        this.setLayout(new GridLayout(1, 2, 5, 0));

        this.partiegauche.add(this.main);
        this.partiegauche.add(this.selection);

        this.add(this.partiegauche);
        this.add(this.terrain);
        this.partiegauche.setBackground(Color.black);
        this.setBackground(Color.black);
    }

    /**
     *
     * @param e
     */
    @Override
    public void actionPerformed(ActionEvent e) {
        //throw new UnsupportedOperationException("Not supported yet.");
        cjeu.notifierObs();
        repaint();
        System.out.println("ActionPerformed");
    }

    // Mettre toutes les actions qu'on peut faire avec un click souris
    class ClicSouris implements MouseListener {

        @Override
        public void mouseClicked(MouseEvent me) {
        }

        @Override
        public void mousePressed(MouseEvent me) {
        }

        @Override
        public void mouseReleased(MouseEvent me) {
        }

        @Override
        public void mouseEntered(MouseEvent me) {
        }

        @Override
        public void mouseExited(MouseEvent me) {
        }
    }

    // Mettre toutes les actions qu'on peut faire avec un mouvement de souris
    class SourisMouse implements MouseMotionListener {

        @Override
        public void mouseDragged(MouseEvent e) {
        }

        @Override
        public void mouseMoved(MouseEvent e) {
        }
    }
}
